# Maintainer: Morten Linderud <foxboron@archlinux.org>
# Maintainer: Chih-Hsuan Yen <yan12125@archlinux.org>
# Maintainer: Anatol Pomozov

pkgname=python-autobahn
# https://github.com/crossbario/autobahn-python/blob/master/docs/changelog.rst
pkgver=23.1.2
pkgrel=2
pkgdesc='Real-time framework for Web, Mobile & Internet of Things'
arch=(loong64 x86_64)
url='https://crossbar.io/autobahn/'
license=(MIT)
depends=(python-cffi python-twisted python-txaio python-wsaccel
         python-cryptography)
makedepends=(python-argon2_cffi python-cbor2 python-flatbuffers
             python-msgpack python-passlib python-pynacl python-pytrie
             python-setuptools python-ubjson)
checkdepends=(python-pytest python-pytest-asyncio)
optdepends=(
  'python-cbor2: CBOR serializer support'
  'python-flatbuffers: FlatBuffers serializer support'
  'python-msgpack: MsgPack serializer support'
  'python-u-msgpack: pure-python alternative to python-msgpack for MsgPack serializer support'
  'python-ubjson: UBJSON serializer support'
  'python-ujson: accelerated JSON serializer support'
  'python-argon2_cffi: WAMP-SCRAM authentication support'
  'python-passlib: WAMP-SCRAM authentication support'
  'python-pynacl: WAMP-cryptosign and WAMP-cryptobox support'
  'python-pytrie: WAMP-cryptobox support'
  'python-qrcode: support QR codes in WAMP'
  'python-pyopenssl: SSL/TLS support'
  'python-snappy: snappy compression suppport for WebSocket messages'
)

source=(https://files.pythonhosted.org/packages/source/a/autobahn/autobahn-$pkgver.tar.gz)
sha256sums=('c5ef8ca7422015a1af774a883b8aef73d4954c9fcd182c9b5244e08e973f7c3a')

prepare() {
  cd "$srcdir/autobahn-$pkgver"
  # For reproducibility
  # If Arch decides to increase CPU requirements [1], -march=native can be
  # replaced with -march=nehalem so that the SSE 4.1 implementation is built
  # [1] https://gitlab.archlinux.org/archlinux/rfcs/-/blob/master/rfcs/0002-march.rst
  sed -i "s#, '-march=native'##" autobahn/nvx/_utf8validator.py
}

build() {
  cd "$srcdir/autobahn-$pkgver"
  python setup.py build
}

check() {
  cd "$srcdir/autobahn-$pkgver"
  pyver=$(python -c "import sys; print('{}{}'.format(*sys.version_info[:2]))")
  # "autobahn on asyncio is tested using pytest, while for twisted we are using twisted trial"
  # https://github.com/crossbario/autobahn-python/issues/1235#issuecomment-522440810
  USE_TWISTED=1 PYTHONPATH=.:build/lib.linux-$CARCH-cpython-$pyver trial autobahn
  USE_ASYNCIO=1 PYTHONPATH=.:build/lib.linux-$CARCH-cpython-$pyver pytest autobahn
}

package() {
  cd "$srcdir/autobahn-$pkgver"
  python setup.py install --root="$pkgdir" --optimize=1 --skip-build
  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
